#pragma once
#include <WinUser.h>

#define WM_PROCESSID        (WM_USER + 100)
#define WM_PROCESSIMAGE     (WM_USER + 101)
#define WM_MODULEINJECT     (WM_USER + 102)
#define WM_SHELLCODEINJECT  (WM_USER + 103)
#define WM_CODEINJECTTYPE   (WM_USER + 104)
#define WM_GETINJECTADDRESS (WM_USER + 105)

#define UNKNOWN_TYPE        0xFF

typedef enum _MODULE_INJECT
{
    M_REMOTE_THREAD = 0,
    M_USER_APC,
    M_HIJACK,
    M_MESSAGE_HOOK,
    M_PE_INJECT
}MODULE_INJECT;

typedef enum _SHELLCODE_INJECT
{
    S_REMOTE_THREAD = 0,
    S_EARLY_BIRD,
    S_CTRL_C
}SHELLCODE_INJECT;

typedef struct _INJECT_CONFIG
{
    BOOL bConfirm;
    MODULE_INJECT Type;
    PVOID Data;
    DWORD DataLen;
}INJECT_CONFIG, * PINJECT_CONFIG;

typedef struct _SHELLCODE_CONFIG
{
    BOOL bConfirm;
    PVOID Code;
    DWORD CodeLen;
}SHELLCODE_CONFIG, * PSHELLCODE_CONFIG;
